Azure Policy
1. 개요
1. 개요
Azure Policy는 마이크로소프트의 클라우드 컴퓨팅 플랫폼인 Azure에서 제공하는 정책 기반 관리 도구이다. 이 서비스는 조직이 Azure 리소스에 대한 규정 준수 및 거버넌스 요구사항을 자동화하고 중앙 집중식으로 관리할 수 있도록 설계되었다. 사용자는 특정 규칙을 정의하여 리소스의 구성, 배포, 관리 방식을 제어하고, 이를 통해 보안 강화, 비용 절감, 운영 효율성 향상 등의 목표를 달성할 수 있다.
주요 용도는 Azure 리소스의 규정 준수 및 거버넌스를 자동화하는 것이다. 구체적으로는 보안 표준 준수, 비용 관리 정책 적용, 리소스에 대한 태그 지정 자동화 등 다양한 IT 거버넌스 작업을 수행한다. 이를 통해 관리자는 수동 감사나 점검에 의존하지 않고도, 리소스가 회사 정책이나 규정 준수 기준을 지속적으로 준수하도록 보장할 수 있다.
Azure Policy는 정책 정의와 정책 할당이라는 핵심 개념을 기반으로 작동한다. 정책 정의는 리소스가 충족해야 할 조건과 그 조건을 위반했을 때 수행할 작업을 기술한 규칙이다. 이 정의를 특정 범위(예: 구독, 관리 그룹, 리소스 그룹)에 할당하면, 해당 범위 내의 모든 기존 및 새 리소스에 대해 정책 평가가 자동으로 이루어진다. 평가 결과는 준수 또는 비준수 상태로 보고되며, 정책에 따라 리소스 생성을 거부하거나 비준수 리소스를 자동으로 수정하는 등의 조치가 취해질 수 있다.
이 서비스는 클라우드 거버넌스 서비스로서, 복잡한 클라우드 환경에서 일관된 정책 적용과 지속적인 모니터링을 가능하게 한다. Azure Policy를 효과적으로 사용함으로써 조직은 클라우드 운영의 위험을 줄이고, 자원 사용을 최적화하며, 전반적인 규정 준수 상태를 명확하게 가시화할 수 있다.
2. 핵심 개념
2. 핵심 개념
2.1. 정책 정의
2.1. 정책 정의
정책 정의는 Azure Policy의 기본 구성 요소로, 특정 조건을 충족하는지 여부를 평가하고 그에 따른 조치를 정의하는 규칙의 집합이다. 각 정의는 JSON 형식으로 작성되며, 평가할 조건과 해당 조건이 충족될 때 수행할 효과를 명시한다. 정책 정의는 Azure Portal, Azure CLI, Azure PowerShell 또는 Azure Resource Manager 템플릿을 통해 생성하고 관리할 수 있다.
정책 정의의 구조는 크게 모드, 매개 변수, 정책 규칙으로 구성된다. 모드는 정책이 평가할 리소스 유형을 결정하며, 주로 '인덱싱됨' 모드가 사용되어 Azure Resource Manager를 통해 관리되는 대부분의 리소스를 대상으로 한다. 매개 변수는 정책 정의를 보다 유연하고 재사용 가능하게 만들어주며, 할당 시 특정 값을 제공할 수 있다. 정책 규칙은 평가 논리와 효과를 포함하는 핵심 부분이다.
정책 규칙은 'if-then' 블록으로 구성된다. 'if' 조건부에서는 하나 이상의 조건을 지정하여 평가 대상을 정의한다. 조건은 리소스의 속성, 위치, 태그 또는 SKU 등을 기준으로 할 수 있다. 'then' 블록에서는 조건이 충족될 때 트리거될 효과를 지정한다. 대표적인 효과로는 감사, 거부, 수정, 비활성화 등이 있다. 예를 들어, 특정 리소스 그룹 외부에 스토리지 계정 생성 시도를 거부하는 정책을 정의할 수 있다.
정의를 작성할 때는 Azure Policy Alias를 활용하여 리소스의 특정 속성을 참조한다. Alias는 리소스 유형별로 사용 가능한 속성에 대한 경로를 제공하며, 이를 통해 정책이 다양한 Azure 서비스의 리소스 속성을 평가할 수 있다. 완성된 정책 정의는 관리 그룹 또는 구독 범위에 할당되어 실제로 적용된다.
2.2. 정책 할당
2.2. 정책 할당
정책 할당은 정의된 정책 규칙을 특정 범위의 Azure 리소스에 적용하는 과정이다. 정책 정의 자체는 규칙을 담은 템플릿에 불과하며, 이를 특정 관리 그룹, 구독, 또는 리소스 그룹에 할당해야 실제로 평가와 적용이 시작된다. 할당 시에는 정책 정의에 필요한 매개 변수 값을 지정하고, 해당 정책의 효과(예: 감사, 거부, 수정)를 결정한다.
할당은 Azure Portal, Azure PowerShell, Azure CLI, 또는 Azure Resource Manager 템플릿을 통해 수행할 수 있다. 할당을 생성할 때는 정책의 평가 범위를 명확히 정의하는 것이 중요하다. 관리 그룹 수준에서 할당하면 해당 그룹 하위의 모든 구독과 리소스 그룹에 정책이 상속되어 적용된다. 이는 조직 전체에 일관된 거버넌스를 구축하는 데 효율적인 방법이다.
정책 할당 시 '적용 모드'를 설정할 수 있다. 이 모드는 정책이 새 리소스와 기존 리소스 모두에 대해 평가 및 적용될지, 아니면 새 리소스에 대해서만 적용될지를 제어한다. 또한 할당에는 설명과 표시 이름을 붙여 관리 효율성을 높일 수 있다. 할당된 정책은 주기적으로 또는 리소스 변경 시 트리거되어 평가되며, 그 결과는 Azure Policy 준수 대시보드에 집계되어 시각화된다.
2.3. 정책 이니셔티브
2.3. 정책 이니셔티브
정책 이니셔티브는 단일 정책 정의보다 더 복잡한 거버넌스 요구 사항을 해결하기 위해 설계된 Azure Policy의 핵심 구성 요소이다. 이는 여러 개별 정책 정의를 하나의 논리적 그룹으로 묶은 컨테이너 역할을 한다. 사용자는 여러 관련 정책을 개별적으로 할당하는 대신, 하나의 정책 이니셔티브를 할당함으로써 특정 규정 준수 표준이나 조직의 내부 규정을 포괄적으로 적용할 수 있다. 예를 들어, 특정 보안 표준을 준수하기 위해서는 네트워크, 데이터 암호화, 접근 제어 등에 관한 여러 정책이 필요할 수 있는데, 이러한 정책들을 하나의 이니셔티브로 그룹화하여 관리 효율성을 높인다.
마이크로소프트는 일반적인 규정 준수 프레임워크를 지원하기 위해 사전 정의된 여러 정책 이니셔티브를 Azure Portal의 정책 갤러리를 통해 제공한다. 이러한 기본 제공 이니셔티브에는 CIS 벤치마크, NIST SP 800-53, PCI DSS와 같은 업계 표준에 대한 준수 정책 세트가 포함되어 있다. 조직은 이러한 기본 제공 이니셔티브를 그대로 사용하거나, 자체적으로 정의한 정책 정의들을 조합하여 사용자 지정 정책 이니셔티브를 생성할 수 있다.
정책 이니셔티브를 할당하면, 그 안에 포함된 모든 정책 정의가 대상 범위(관리 그룹, 구독, 리소스 그룹)에 대해 동시에 평가된다. 이를 통해 관리자는 복잡한 거버넌스 목표를 달성하기 위한 정책 집합을 일관되고 중앙 집중식으로 관리할 수 있다. 평가 결과는 각 정책 정의별로 개별적으로 집계되며, Azure Portal의 규정 준수 대시보드에서는 이니셔티브 전체와 포함된 각 정책의 준수 상태를 한눈에 확인할 수 있다.
2.4. 관리 그룹
2.4. 관리 그룹
관리 그룹은 Azure Policy를 효과적으로 운영하기 위한 핵심적인 계층 구조 관리 도구이다. 이 기능은 Azure 구독을 논리적인 컨테이너로 그룹화하여, 정책 할당과 역할 기반 접근 제어를 광범위한 범위에 일괄적으로 적용할 수 있게 해준다. 하나의 관리 그룹 아래에는 여러 개의 구독이 포함될 수 있으며, 관리 그룹 자체도 다른 관리 그룹의 하위에 중첩될 수 있다. 이를 통해 기업은 부서, 프로젝트, 환경(예: 개발, 테스트, 운영) 또는 지리적 위치에 따라 계층적인 거버넌스 구조를 구축할 수 있다.
Azure Policy에서 관리 그룹의 가장 큰 장점은 정책과 이니셔티브의 관리 효율성을 극대화한다는 점이다. 예를 들어, 회사의 모든 구독에 적용해야 하는 보안 기준 정책을 정의할 경우, 각 구독에 개별적으로 정책을 할당하는 대신 최상위 관리 그룹에 한 번만 할당하면 된다. 이 할당은 계층 구조를 따라 아래에 속한 모든 구독에 자동으로 상속된다. 이 방식은 정책 관리의 복잡성을 줄이고, 일관된 규정 준수 상태를 유지하는 데 필수적이다.
관리 그룹 계층 구조는 Azure Active Directory 테넌트 내에 단일 루트 관리 그룹으로 시작한다. 관리자는 이 계층 구조를 통해 세분화된 접근 제어를 구현할 수 있으며, 특정 관리 그룹 수준에서 Azure Policy에 대한 권한을 위임할 수도 있다. 이는 중앙 집중식 거버넌스 팀이 정책을 정의하고 할당하는 동시에, 각 비즈니스 단위나 팀이 자신의 구독을 운영할 수 있는 유연성을 제공하는 데모델에 적합하다.
따라서 관리 그룹은 Azure Policy를 활용한 클라우드 거버넌스의 토대를 형성한다. 규모에 따른 정책 관리, 비용 통제, 보안 준수를 효과적으로 달성하려면 리소스의 논리적 그룹화를 위한 관리 그룹 구조를 신중하게 설계하는 것이 중요하다.
3. 작동 방식
3. 작동 방식
3.1. 평가 주기
3.1. 평가 주기
Azure Policy는 리소스의 규정 준수 상태를 지속적으로 평가한다. 평가는 정책 할당이 생성, 업데이트 또는 삭제될 때 즉시 트리거된다. 또한 Azure Policy는 기본적으로 24시간마다 정기적인 평가 주기를 실행하여 모든 할당된 정책에 대해 관리 범위 내의 모든 리소스를 재평가한다. 이는 리소스가 생성, 수정 또는 삭제되는 등 정책 외부에서 환경이 변경된 경우에도 최신 규정 준수 상태를 확보하기 위함이다.
평가 결과는 Azure Portal의 Azure Policy 대시보드에 규정 준수 상태로 표시되며, Azure Resource Graph를 통해 쿼리하거나 Azure Monitor 및 Log Analytics와 통합하여 모니터링할 수 있다. 정책 평가는 관리 그룹, 구독, 리소스 그룹 또는 개별 리소스 수준에서 이루어지며, 상위 범위(예: 관리 그룹)에 할당된 정책은 그 하위의 모든 구독과 리소스에 자동으로 적용된다.
3.2. 적용 모드 (Enforcement Mode)
3.2. 적용 모드 (Enforcement Mode)
적용 모드는 Azure Policy 정의의 동작을 제어하는 설정이다. 이 모드는 정책이 새로 생성되거나 업데이트되는 리소스에 대해 실제로 규정 준수 평가와 강제를 수행할지, 아니면 평가만 수행할지 여부를 결정한다. 기본적으로 적용 모드는 'Enabled'(활성화됨) 상태로, 정책이 할당된 범위 내의 리소스에 대해 완전히 작동한다. 'Disabled'(비활성화됨) 상태로 설정하면 정책 정의는 존재하지만, 리소스에 대한 평가나 강제 실행이 이루어지지 않는다.
이 기능은 정책을 안전하게 테스트하거나 특정 기간 동안 정책의 적용을 일시적으로 중단해야 할 때 유용하다. 예를 들어, 새로운 정책을 프로덕션 환경에 배포하기 전에 'Disabled' 모드로 할당하여 정책 정의의 구문 오류나 의도하지 않은 영향을 확인할 수 있다. 또한, 기존 정책의 영향을 분석하거나 문제를 해결하는 동안 일시적으로 정책을 중단하는 용도로도 사용된다.
적용 모드는 정책 할당 단계에서 설정하며, 정책 정의 자체의 속성은 아니다. 따라서 동일한 정책 정의를 서로 다른 적용 모드로 여러 번 할당하는 것도 가능하다. 이는 관리 그룹, 구독, 리소스 그룹 등 다양한 범위에서 정책의 적용 여부를 세밀하게 제어할 수 있게 해준다.
3.3. 거부 효과 (Deny Effect)
3.3. 거부 효과 (Deny Effect)
거부 효과는 Azure Policy가 특정 조건을 만족하는 리소스의 생성 또는 업데이트 요청을 차단하는 정책 정의의 결과이다. 이 효과는 정책이 할당된 범위 내에서 규정을 위반하는 리소스의 배포를 사전에 방지하는 강력한 거버넌스 메커니즘으로 작동한다. 예를 들어, 특정 지역 외부에 스토리지 계정을 생성하지 못하도록 하거나, 허용되지 않는 가상 머신 SKU의 사용을 막는 데 활용된다.
정책 평가 시 거부 효과는 적용 모드가 '기본값' 또는 '수정 안 함'으로 설정된 경우에 활성화된다. 정책 할당 시 사용자가 지정한 조건과 일치하는 Azure Resource Manager 요청이 들어오면, Azure Policy는 해당 요청을 거부하고 오류 메시지를 반환한다. 이로 인해 포털, Azure CLI, Azure PowerShell 또는 API를 통한 배포가 실패하게 되어, 정책을 위반하는 리소스가 생성되지 않는다.
거부 효과는 주로 보안 및 규정 준수 요구사항을 강제하는 데 사용된다. 허용되지 않는 IP 주소 범위를 가진 네트워크 보안 그룹 규칙을 차단하거나, 공용 네트워크 액세스가 가능한 데이터베이스 생성을 금지하는 정책을 구현할 수 있다. 이는 조직의 클라우드 보안 태세를 강화하고, GDPR이나 HIPAA와 같은 외부 규정 준수 요건을 충족시키는 데 기여한다.
거부 효과가 적용된 정책은 기존에 존재하는 비준수 리소스에는 영향을 미치지 않는다는 점에 유의해야 한다. 즉, 정책 할당 이전에 배포된 비준수 리소스는 그대로 유지되며, 정책은 이후의 새 배포나 업데이트 시도만 차단한다. 이러한 기존 리소스를 처리하려면 수정 작업을 통해 사후에 대응하거나, Azure Resource Graph를 이용해 비준수 상태를 조사해야 한다.
3.4. 수정 작업 (Remediation)
3.4. 수정 작업 (Remediation)
Azure Policy의 수정 작업은 평가 결과 비준수로 판단된 기존 리소스를 자동으로 규정 준수 상태로 되돌리는 기능이다. 정책 할당 시 효과를 '수정'으로 설정하거나, '감사' 모드로 배포된 후 별도의 수정 작업을 생성하여 실행할 수 있다. 이 작업은 비준수 리소스를 검색한 후 미리 정의된 수정 태스크를 실행하여 리소스의 속성을 변경하거나 특정 구성을 적용한다.
수정 작업은 주기적으로 실행되거나 수동으로 트리거할 수 있다. 일반적으로 관리 그룹, 구독 또는 리소스 그룹 범위에서 생성되며, 해당 범위 내의 모든 비준수 리소스를 대상으로 한다. 수정 태스크는 실제로 리소스를 변경하는 배포를 수행하므로, 실행을 위해서는 대상 범위에 대한 적절한 권한(예: 리소스 기여자 역할)이 필요하다.
주요 사용 사례로는 보안 설정 자동 교정, 태그 일관성 유지, 특정 스토리지 계정의 공용 액세스 비활성화, 관리 디스크 사용 강제, 허용되지 않는 가상 머신 SKU 배포 방지 등이 있다. 수정 작업을 통해 IT 거버넌스와 규정 준수를 수동 개입 없이 지속적으로 유지할 수 있다.
수정 작업의 진행 상황과 결과는 Azure Portal의 정책 페이지나 Azure Resource Graph를 통해 확인할 수 있다. 또한, Azure Monitor 및 Log Analytics와 통합되어 수정 이벤트를 로깅하고 모니터링할 수 있다. 이를 통해 조직의 클라우드 거버넌스 정책 이행을 효과적으로 자동화하고 감사 추적을 확보하는 데 기여한다.
4. 정책 정의 작성
4. 정책 정의 작성
4.1. 정책 규칙 구조
4.1. 정책 규칙 구조
Azure Policy의 정책 정의는 JSON 형식으로 작성되며, 그 핵심은 policyRule 블록에 위치한 정책 규칙이다. 이 규칙은 if 조건과 then 효과로 구성된 논리적 명제를 정의한다. if 조건은 하나 이상의 조건자로 구성되어 평가 대상 Azure 리소스의 속성을 검사하며, then 효과는 조건이 충족될 때 수행할 동작을 지정한다. 효과에는 규정 준수 상태를 기록하는 audit, 리소스 생성을 차단하는 deny, 비준수 리소스를 수정하는 deployIfNotExists 등이 있다.
정책 규칙의 if 조건은 논리 연산자(allOf, anyOf, not)를 사용하여 복잡한 조건을 구성할 수 있다. 예를 들어, 특정 리소스 유형을 대상으로 하고, 특정 리소스 태그가 존재하지 않으며, 특정 리전에 배포된 리소스를 검사하는 정책을 만들 수 있다. 조건 내부에서는 리소스의 속성 경로와 정책 Alias를 사용하여 구체적인 필드를 참조한다.
policyRule은 parameters 블록에서 정의된 매개변수를 참조하여 보다 유연하고 재사용 가능한 정책을 작성할 수 있게 한다. 이를 통해 하드 코딩된 값을 피하고, 정책 할당 시마다 다른 값을 입력할 수 있다. 예를 들어, 허용되는 가상 머신 SKU 목록이나 필수 태그 키의 이름을 매개변수로 정의하는 것이 일반적이다. 정책 정의의 전체 구조는 properties 아래에 displayName, description, mode, metadata, parameters, policyRule을 포함한다.
4.2. 정책 매개 변수
4.2. 정책 매개 변수
정책 매개 변수는 정책 정의를 보다 유연하고 재사용 가능하게 만드는 핵심 요소이다. 매개 변수를 사용하면 단일 정책 정의를 작성한 후, 서로 다른 값이나 조건으로 여러 번 할당할 수 있다. 이는 비슷한 규칙을 적용하되, 대상 리소스 그룹, 허용되는 가상 머신 크기, 필수 태그 키의 이름 등 구체적인 값이 다른 시나리오에 매우 효율적이다.
정책 매개 변수는 정의의 parameters 블록에 선언된다. 각 매개 변수에는 이름, 데이터 유형(예: 문자열, 배열, 정수, 불리언), 그리고 선택적으로 기본값이나 허용되는 값 목록과 같은 메타데이터가 정의된다. 예를 들어, 특정 지역에서만 리소스 생성을 허용하는 정책을 작성한다면, 허용 지역 목록을 문자열 배열 타입의 매개 변수로 정의할 수 있다. 이렇게 하면 정책을 할당할 때마다 해당 환경에 맞는 구체적인 지역 목록을 지정할 수 있다.
매개 변수는 정책 할당 단계에서 값을 제공받는다. Azure Portal, Azure CLI, Azure PowerShell 또는 Azure Resource Manager 템플릿을 통해 정책을 할당할 때, 정의된 매개 변수에 대한 구체적인 값을 입력하게 된다. 이 할당 시 입력된 값이 정책 평가 시 실제 규칙 로직에 사용되어, 리소스가 규칙을 준수하는지 여부를 판단하는 기준이 된다.
매개 변수의 강력한 기능 중 하나는 강제 적용 매개 변수를 사용하는 것이다. 이는 정책 할당 시 매개 변수 값을 고정하여, 이후 할당을 수정하는 사용자가 이 값을 변경할 수 없도록 잠그는 역할을 한다. 이는 조직의 핵심 규정 준수 요구사항을 담은 매개 변수 값을 변경으로부터 보호하여 거버넌스의 일관성을 유지하는 데 도움을 준다.
4.3. Alias 사용
4.3. Alias 사용
Azure Policy에서 정책 정의를 작성할 때, Alias는 특정 Azure 리소스 유형의 속성에 접근하기 위한 경로를 제공하는 핵심 개념이다. Alias는 Azure Resource Manager의 리소스 스키마에 정의된 속성에 대한 짧은 이름 역할을 하며, 정책 규칙 내에서 'field' 조건을 사용하여 해당 속성의 값을 검사하거나 제한하는 데 사용된다. 예를 들어, 가상 머신의 특정 스토리지 계정 유형 사용을 제한하거나, 네트워크 보안 그룹에 특정 규칙이 존재하는지 확인하는 정책을 만들 때 관련 리소스 속성의 Alias를 참조한다.
Alias는 크게 두 가지 유형으로 구분된다. 첫째는 리소스의 일반 속성을 가리키는 '속성 별칭(Property Alias)'이다. 둘째는 특정 API 버전에서 리소스에 사용할 수 있는 속성 목록을 의미하는 '버전 별칭(Version Alias)'이다. 정책 정의를 작성할 때는 평가 대상 리소스의 API 버전과 호환되는 Alias를 사용해야 하며, Azure Policy 포털, Azure CLI, 또는 PowerShell을 통해 현재 사용 가능한 Alias 목록을 조회할 수 있다.
정책 규칙에서 Alias를 효과적으로 사용하려면, 먼저 제어하려는 리소스 유형과 속성을 정확히 식별해야 한다. 그 후, 해당 속성에 매핑되는 Alias 이름을 확인하여 정책 규칙의 조건부 논리('if' 조건)에 포함시킨다. 이를 통해 "리소스의 'properties.storageProfile.imageReference.offer' 속성이 'WindowsServer'와 일치하는 경우"와 같은 세밀한 규정 준수 규칙을 정의할 수 있다. Alias를 활용하면 다양한 Azure 서비스에 걸쳐 일관된 거버넌스 정책을 구축하는 데 필수적인, 리소스 구성의 구체적인 세부 사항을 검증하는 것이 가능해진다.
5. 사용 사례
5. 사용 사례
5.1. 규정 준수 및 거버넌스
5.1. 규정 준수 및 거버넌스
Azure Policy는 조직의 클라우드 거버넌스 및 규정 준수 요구사항을 자동화하고 중앙 집중식으로 관리하는 핵심 도구이다. 이 서비스를 통해 IT 관리자는 Azure 구독 또는 관리 그룹 전체에 걸쳐 일관된 정책을 정의하고 할당하여 리소스의 구성과 배포가 내부 표준 및 외부 규정을 준수하도록 보장할 수 있다. 예를 들어, 특정 지리적 위치 외부에 리소스를 생성하지 못하도록 제한하거나, 허용되지 않는 가상 머신 크기의 사용을 방지하는 정책을 설정할 수 있다.
주요 규정 준수 프레임워크(예: ISO 27001, NIST, GDPR)의 요구사항을 충족시키기 위한 정책 정의를 구성하여 사용할 수 있다. Azure Policy는 지속적으로 리소스를 평가하여 정책 할당에 정의된 규칙을 위반하는 리소스를 식별하고, 그 결과를 규정 준수 대시보드에 시각적으로 표시한다. 이를 통해 관리자는 실시간으로 조직 전체의 규정 준수 상태를 모니터링하고, 미준수 리소스에 대한 보고서를 생성하여 감사에 대비할 수 있다.
거버넌스 측면에서는 리소스 생성 시부터 표준을 적용함으로써 사전 예방적 통제가 가능하다. 거부 효과를 가진 정책을 할당하면 정책을 위반하는 리소스 배포 자체를 차단할 수 있어, 규정을 벗어난 리소스가 생성되는 것을 원천적으로 방지한다. 또한 태그 관리 정책을 통해 리소스에 필수적인 태그(예: 부서, 비용 센터, 프로젝트 코드)의 부재를 감지하거나 자동으로 적용하도록 설정할 수 있어, 리소스 소유권 추적과 비용 관리의 기초를 마련한다.
이러한 기능들은 클라우드 컴퓨팅 환경에서 빠르게 변화하고 확장하는 리소스에 대한 통제력을 유지하면서도, 복잡한 규정과 내부 정책을 수동으로 관리하는 부담과 오류를 줄이는 데 기여한다. Azure Policy를 효과적으로 활용하면 조직은 클라우드 운영의 일관성, 보안, 그리고 책임성을 확보할 수 있다.
5.2. 보안 정책 적용
5.2. 보안 정책 적용
Azure Policy는 클라우드 컴퓨팅 환경에서 보안 태세를 일관되게 유지하고 강화하기 위한 핵심 도구이다. 이 서비스를 통해 조직은 중앙에서 정의된 보안 기준을 모든 Azure 구독과 리소스에 자동으로 적용할 수 있다. 이를 통해 보안 구성의 오류나 누락을 사전에 방지하고, IT 거버넌스와 규정 준수 요구사항을 충족하는 데 기여한다.
주요 보안 적용 사례로는 특정 리소스 유형의 생성을 제한하거나, 허용되지 않는 가상 머신 크기나 스토리지 계정 유형을 차단하는 것이 있다. 예를 들어, 공개적으로 접근 가능한 스토리지 계정을 생성하지 못하도록 거부 정책을 할당하거나, 관리 디스크를 사용하지 않는 가상 머신의 생성을 금지할 수 있다. 또한, 필수 태그가 지정되지 않은 리소스의 생성을 거부함으로써 보안 분류 및 소유권 관리를 강제할 수도 있다.
Azure Policy는 마이크로소프트가 제공하는 수백 개의 기본 제공(built-in) 보안 정책 정의를 활용할 수 있어 편리하다. 이러한 정책들은 CIS 벤치마크, NIST 표준, GDPR 등 일반적인 규정 준수 프레임워크에 맞춰 설계되어 있다. 관리자는 이러한 사전 정의된 정책을 그대로 할당하거나, 조직의 특정 보안 요구사항에 맞게 매개 변수를 조정하여 사용할 수 있다.
보안 정책의 효과적인 적용을 위해서는 정책 이니셔티브를 통해 여러 관련 정책을 하나의 패키지로 그룹화하는 것이 일반적이다. 또한, 관리 그룹 계층 구조를 활용하면 상위 수준에서 정의한 보안 정책을 하위의 모든 구독과 리소스에 일괄적으로 상속시킬 수 있어, 대규모 클라우드 컴퓨팅 환경에서도 일관된 보안 관리를 구현할 수 있다.
5.3. 비용 관리
5.3. 비용 관리
Azure Policy는 클라우드 지출을 통제하고 최적화하는 데 중요한 역할을 한다. 리소스의 생성, 구성, 크기를 제한하는 정책을 정의함으로써 예상치 못한 비용 초과를 사전에 방지할 수 있다. 예를 들어, 특정 가상 머신 SKU나 고성능 스토리지 계정의 생성을 금지하거나, 특정 리전 외부에 리소스를 배포하지 못하도록 제한하는 정책을 적용할 수 있다. 이를 통해 비용 효율적인 리소스 구성만 허용하도록 강제하여 클라우드 컴퓨팅 비용을 관리한다.
비용 관리 정책은 주로 거부 효과를 활용하여 리소스 배포 단계에서 비용 위반 사항을 차단한다. 또한, 적용 모드를 통해 기존 리소스에 대한 감사만 수행하거나, 새 리소스에 대해서만 제한을 적용하는 방식으로 유연하게 운영할 수 있다. 정책 이니셔티브를 사용하면 비용 최적화와 관련된 여러 정책 정의를 하나의 패키지로 묶어 일관되게 할당할 수 있어 관리 효율성을 높인다.
태그 관리 자동화 역시 비용 관리의 핵심 요소로 작용한다. 리소스에 부서, 프로젝트, 비용 센터와 같은 필수 태그를 부착하도록 강제하는 정책을 만들 수 있다. 태그가 지정된 리소스는 Azure Resource Graph를 통해 쉽게 쿼리되고 그룹화될 수 있으며, 이를 바탕으로 Azure Cost Management와 같은 도구에서 정확한 비용 배분과 상세한 지출 분석이 가능해진다. 이는 IT 거버넌스와 재무 관리의 기초를 제공한다.
비용 관련 정책 위반 리소스를 식별한 후에는 수정 작업을 통해 자동으로 구성을 변경할 수 있다. 예를 들어, 허용되지 않는 크기의 가상 머신을 감지하면 더 작은 크기로 다운사이징하는 수정 태스크를 트리거하도록 구성할 수 있다. 이러한 자동화된 교정 과정을 통해 지속적인 비용 최적화 상태를 유지하고, 수동 개입을 최소화하면서 규정 준수 수준을 높일 수 있다.
5.4. 태그 관리 자동화
5.4. 태그 관리 자동화
Azure Policy를 사용하면 조직의 클라우드 리소스에 대한 태그 지정 표준을 자동으로 적용하고 관리할 수 있다. 태그는 리소스를 분류하고, 비용을 추적하며, 소유권을 명확히 하는 데 필수적인 메타데이터이다. Azure Policy는 리소스가 생성되거나 업데이트될 때 필수 태그가 누락된 경우 이를 자동으로 추가하거나, 잘못된 태그 값을 거부하는 정책을 정의하여 태그 관리를 자동화한다.
태그 관리 자동화의 일반적인 사용 사례로는 'costCenter'나 'environment'와 같은 필수 태그 키의 존재를 강제하는 정책을 만드는 것이 있다. 예를 들어, 모든 가상 머신과 스토리지 계정에 'Department' 태그가 있어야 한다는 정책을 할당하면, 새 리소스를 만들 때 해당 태그를 빠뜨리면 배포가 실패하거나 정책이 자동으로 태그를 추가하도록 구성할 수 있다. 이를 통해 리소스 소유권과 비용 할당이 명확해지며, 클라우드 비용 관리가 용이해진다.
또한 Azure Policy는 태그 값의 형식이나 허용되는 값 목록을 제한하는 데에도 사용된다. 'environment' 태그의 값이 'prod', 'dev', 'test' 중 하나여야 한다고 규정하면, 일관된 명명 규칙을 유지할 수 있다. 이러한 정책은 리소스 관리자 템플릿을 통해 배포되는 리소스나 Azure Portal, Azure CLI 등을 통해 직접 생성되는 리소스 모두에 대해 평가되어 적용된다.
태그 정책이 위반된 기존 리소스에 대해서는 수정 작업을 통해 대규모로 태그를 일괄 추가하거나 수정할 수 있다. 이는 Azure Resource Graph를 사용하여 정책을 준수하지 않는 모든 리소스를 빠르게 쿼리한 후, 수정 태스크를 생성하여 실행하는 방식으로 이루어진다. 결과적으로 조직 전체의 리소스 태그 체계를 중앙에서 통제하고 표준화하여 운영 효율성과 거버넌스 수준을 높이는 데 기여한다.
6. 관련 Azure 서비스
6. 관련 Azure 서비스
6.1. Azure Blueprints
6.1. Azure Blueprints
Azure Blueprints는 Azure Policy와 밀접하게 연동되는 클라우드 거버넌스 서비스이다. 이 서비스는 반복 가능한 방식으로 Azure 환경을 신속하게 구축하고 배포할 수 있도록 설계된 패키지 또는 정의 집합이다. 블루프린트는 Azure Resource Manager 템플릿, 정책 할당, 역할 할당, 리소스 그룹과 같은 아티팩트를 하나의 패키지로 캡슐화하여, 규정 준수 요구사항, 보안 표준, 비용 관리 정책을 포함한 조직의 표준 및 패턴을 일관되게 적용하는 데 사용된다.
Azure Blueprints는 특히 대규모 환경에서 거버넌스를 확장하는 데 유용하다. 관리자는 블루프린트를 정의하여 특정 표준, 패턴 및 요구사항을 포괄하는 완전한 환경 템플릿을 만들 수 있다. 이 블루프린트를 구독에 할당하면, 블루프린트에 포함된 모든 아티팩트가 자동으로 배포된다. 이 과정에서 Azure Policy 정의가 할당되어 생성되는 리소스가 정책을 준수하도록 강제하며, Azure Resource Manager 템플릿을 통해 인프라를 프로비저닝하고, 역할 기반 액세스 제어를 구성할 수 있다.
Azure Policy와의 핵심적인 차이점은 관리 범위와 라이프사이클에 있다. Azure Policy는 주로 기존 및 새로운 리소스에 대한 규정 준수를 지속적으로 평가하고 적용하는 데 중점을 둔다. 반면, Azure Blueprints는 새로운 환경을 처음부터 '올바른 상태'로 구축하기 위한 배포 오케스트레이션 도구의 성격이 강하다. 블루프린트 할당 시점에 리소스와 정책을 함께 배포함으로써, 환경이 태생적으로 규정을 준수하도록 보장한다.
이 서비스는 IT 거버넌스와 규정 준수를 자동화하는 데 필수적인 도구로, 복잡한 클라우드 배포를 간소화하고 조직의 클라우드 컴퓨팅 표준을 강화하는 데 기여한다. 블루프린트를 통해 정의된 환경은 버전 관리가 가능하여, 표준이 변경될 때 업데이트된 블루프린트를 게시하고 기존 할당을 업그레이드할 수 있다.
6.2. Azure Resource Graph
6.2. Azure Resource Graph
Azure Resource Graph는 Azure 환경 내의 리소스에 대한 광범위한 쿼리 및 분석을 가능하게 하는 서비스이다. 이 서비스는 Azure Policy와 긴밀하게 통합되어 정책 평가 및 규정 준수 상태 모니터링을 위한 강력한 기반을 제공한다. Azure Resource Graph를 사용하면 구독이나 관리 그룹을 넘어 전사적인 수준에서 리소스 인벤토리를 신속하게 조회하고, 특정 조건을 가진 리소스를 필터링하며, 리소스 간의 관계와 구성을 탐색할 수 있다.
Azure Policy는 리소스의 규정 준수 상태를 평가하고 보고할 때 내부적으로 Azure Resource Graph를 활용한다. 사용자가 정책을 할당하면, 정책 엔진은 Azure Resource Graph를 쿼리하여 정책 규칙에 정의된 조건과 일치하는 모든 리소스를 식별한다. 이를 통해 수천 개의 리소스에 대한 평가도 효율적이고 빠르게 수행된다. 또한 Azure Portal의 정책 준수 대시보드나 Azure Monitor 로그를 통해 제공되는 상세한 준수 보고서의 데이터도 이 서비스를 기반으로 생성된다.
사용자는 Azure Resource Graph Explorer 도구나 REST API, PowerShell, Azure CLI를 통해 직접 쿼리를 실행하여 정책 관리 작업을 보완할 수 있다. 예를 들어, 특정 태그가 누락된 모든 가상 머신을 찾거나, 허용되지 않는 SKU를 사용하는 리소스를 검색하는 복잡한 쿼리를 작성할 수 있다. 이렇게 수집된 인사이트는 새로운 정책 정의를 작성하거나 기존 정책의 효과를 검증하는 데 직접 활용될 수 있다. 따라서 Azure Resource Graph는 단순한 조회 도구를 넘어, 클라우드 거버넌스와 규정 준수 전략을 수립하고 실행하는 데 필수적인 구성 요소이다.
6.3. Azure Monitor 및 Log Analytics
6.3. Azure Monitor 및 Log Analytics
Azure Policy는 규정 준수 평가 결과와 활동 로그를 Azure Monitor에 통합하여 중앙 집중식 모니터링과 경고 기능을 제공한다. 정책 평가 결과는 Azure Policy 리소스 공급자를 통해 Azure 활동 로그에 기록되며, 이를 통해 정책 할당의 변경, 평가 트리거, 준수 상태 변경과 같은 이벤트를 추적할 수 있다. 또한, 정책 준수 데이터는 Log Analytics 작업 영역으로 전송되어 심층적인 분석과 사용자 정의 대시보드 구축, 복잡한 쿼리 수행이 가능하다.
Log Analytics를 사용하면 Kusto 쿼리 언어(KQL)를 활용하여 Azure Policy의 준수 상태 데이터를 쿼리하고 시각화할 수 있다. 이를 통해 조직 전체의 규정 준수 추세를 분석하거나, 특정 리소스 유형이나 위치에 대한 위반 사항을 집중적으로 조사하는 등의 작업이 가능하다. 예를 들어, 특정 태그가 누락된 모든 리소스를 찾거나, 보안 정책을 위반한 리소스 그룹을 식별하는 쿼리를 작성할 수 있다.
Azure Monitor의 경고 규칙 기능과 연동하여 정책 준수 상태가 특정 임계값을 벗어나면 자동으로 알림을 받거나, Azure Automation Runbook을 트리거하는 자동화된 워크플로를 구성할 수 있다. 이는 지속적인 규정 준수를 유지하고 문제에 대해 신속하게 대응하는 데 핵심적인 역할을 한다. 따라서 Azure Policy는 단순한 규칙 적용 도구를 넘어, Azure Monitor 및 Log Analytics와 결합되어 포괄적인 클라우드 거버넌스와 관찰 가능성(Observability) 체계의 기반을 형성한다.
